爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路

您所在的位置:网站首页 pixiv proxy 爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路

爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路

#爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路| 来源: 网络整理| 查看: 265

1、原因  SSL 证书报错 http连接太多没有关闭导致的。 经过一番查询,发现该错误是因为如下: http的连接数超过最大限制,默认的情况下连接是Keep-alive的,所以这就导致了服务器保持了太多连接而不能再新建连接。 1、ip被封 2、程序请求速度过快。 2、解决方式

(1)time.sleep()

(2)关闭 SSL 验证   verify=False

response = requests.get(fpath_or_url,headers=headers,stream=True, verify=False)

(3) requests默认是keep-alive的,可能没有释放,加参数 headers={'Connection':'close'}

# TODO ssl证书报错,参数 verify=False,同时,requests默认是keep-alive的,可能没有释放,加参数 sess = requests.Session() sess.mount('http://', HTTPAdapter(max_retries=3)) sess.mount('https://', HTTPAdapter(max_retries=3)) sess.keep_alive = False # 关闭多余连接 text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5)) # connect 和 read 二者的 timeout,所以是一个数组 with open(img_files_path, 'wb') as file: for i in text.iter_content(1024 * 10): file.write(i) text.close() # 关闭,很重要,确保不要过多的链接

(4) 改变重连次数 requests.adapters.DEFAULT_RETRIES = 5

try: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36', } # TODO 增加连接重试次数(一共4次链接) sess = requests.Session() sess.mount('http://', HTTPAdapter(max_retries=3)) sess.mount('https://', HTTPAdapter(max_retries=3)) sess.keep_alive = False # 关闭多余连接 text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5)) # connect 和 read 二者的 timeout,所以是一个数组 with open(img_files_path, 'wb') as file: for i in text.iter_content(1024 * 10): file.write(i) text.close() # 关闭,很重要,确保不要过多的链接 except Exception as e: print(e,self.target_img_url)

(5) 其他 忽略警告信息

3、Reference

       python 爬虫:https; HTTPSConnectionPool(host='z.jd.com', port=443)

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3